home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Windows 95 Programs / Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso / 0800 / winsock.inc < prev    next >
Text File  |  1997-04-10  |  11KB  |  401 lines

  1. { Winsock.h file for Borland Pascal
  2.   Conversion by Marc B. Manza
  3.              Center for Applied Large-Scale Computing
  4.   Requires Winsock.pas and Winsock.inc
  5.   Send any comments/change requests/etc. to:
  6.   manza@flash.poly.edu
  7. }
  8. {
  9.   Modified by Mike Caughran Cedar Island Software Nov 1994
  10.   Changed references to SOCKET to tSOCKET
  11.   added INADDR_ANY
  12.   added PInteger
  13. }
  14.  
  15. type
  16.     u_char = char;
  17.     u_short = word; { byte ?? }
  18.     u_int = word;
  19.     u_long = longint;
  20.  
  21.     tSOCKET = u_int;
  22.  
  23. const
  24.      FD_SETSIZE     =   64;
  25.  
  26. type
  27.     fd_set = record
  28.                    fd_count : u_short;
  29.                    fd_array : array[0..FD_SETSIZE-1] of tSOCKET;
  30.     end;
  31.  
  32.     timeval = record
  33.                     tv_sec, tv_usec : longint;
  34.     end;
  35.  
  36. const
  37.      IOCPARM_MASK   =   $007f;
  38.      IOC_VOID       =   $20000000;
  39.      IOC_OUT        =   $40000000;
  40.      IOC_IN         =   $80000000;
  41.      IOC_INOUT      =   (IOC_IN OR IOC_OUT);
  42.  
  43. type
  44.     PPchar = ^PChar;
  45.  
  46.     hostent = record
  47.                     h_name : PChar;
  48.                     h_aliases : PPChar;
  49.                     h_addrtype : integer;
  50.                     h_length : integer;
  51.                     h_addr_list : PPChar;
  52.                     h_addr : PChar;    
  53.     end;
  54.  
  55.     netent = record
  56.                    n_name : PChar;
  57.                    n_aliases : ^PChar;
  58.                    n_addrtype : integer;
  59.                    n_net : u_long;
  60.     end;
  61.  
  62.     servent = record
  63.                     s_name : PChar;
  64.                     s_aliases : ^PChar;
  65.                     s_port : integer;
  66.                     s_proto : PChar;
  67.     end;
  68.  
  69.     protoent = record
  70.                      p_name : PChar;
  71.                      p_aliases : ^Pchar;
  72.                      p_proto : integer;
  73.     end;
  74.  
  75. const
  76.      IPPROTO_IP     =   0;
  77.      IPPROTO_ICMP   =   1;
  78.      IPPROTO_GGP    =   2;
  79.      IPPROTO_TCP    =   6;
  80.      IPPROTO_PUP    =   12;
  81.      IPPROTO_UDP    =   17;
  82.      IPPROTO_IDP    =   22;
  83.      IPPROTO_ND     =   77;
  84.  
  85.      IPPROTO_RAW    =   255;
  86.      IPPROTO_MAX    =   256;
  87.  
  88.  
  89.      IPPORT_ECHO    =   7;
  90.      IPPORT_DISCARD =   9;
  91.      IPPORT_SYSTAT  =   11;
  92.      IPPORT_DAYTIME =   13;
  93.      IPPORT_NETSTAT =   15;
  94.      IPPORT_FTP     =   21;
  95.      IPPORT_TELNET  =   23;
  96.      IPPORT_SMTP    =   25;
  97.      IPPORT_TIMESERVER  =  37;
  98.      IPPORT_NAMESERVER  =  42;
  99.      IPPORT_WHOIS       =  43;
  100.      IPPORT_MTP         =  57;
  101.  
  102.      IPPORT_TFTP        =  69;
  103.      IPPORT_RJE         =  77;
  104.      IPPORT_FINGER      =  79;
  105.      IPPORT_TTYLINK     =  87;
  106.      IPPORT_SUPDUP      =  95;
  107.  
  108.      IPPORT_EXECSERVER  =  512;
  109.      IPPORT_LOGINSERVER =  513;
  110.      IPPORT_CMDSERVER   =  514;
  111.      IPPORT_EFSSERVER   =  520;
  112.  
  113.      IPPORT_BIFFUDP     =  512;
  114.      IPPORT_WHOSERVER   =  513;
  115.      IPPORT_ROUTESERVER =  520;
  116.  
  117.      IPPORT_RESERVED    =  1024;
  118.  
  119.      IMPLINK_IP         =  155;
  120.      IMPLINK_LOWEXPER   =  156;
  121.      IMPLINK_HIGHEXPER  =  158;
  122.  
  123. Type
  124.      SunB = record
  125.                   s_b1, s_b2, s_b3, s_b4 : u_char;
  126.  
  127.      end;
  128.  
  129.      SunW = record
  130.                   s_w1, s_w2 : u_short;
  131.      end;
  132.  
  133.      in_addr = record
  134.                  case integer of
  135.                           0 : (S_un_b : SunB);
  136.                           1 : (S_un_w : SunW);
  137.                           2 : (S_addr : u_long);
  138.      end;
  139.  
  140. var
  141.    S_un : in_addr;
  142.  
  143. type
  144.     sockaddr_in = record
  145.                         sin_family : integer;
  146.                         sin_port : u_short;
  147.                         sin_addr : in_addr;
  148.                         sin_zero : array[0..7] of char;
  149.     end;
  150.  
  151. const
  152.      WSADESCRIPTION_LEN     =   256;
  153.      WSASYS_STATUS_LEN      =   128;
  154.  
  155. type
  156.     LPWSADATA = ^WSAData;
  157.     WSAData = record
  158.                     wVersion : word;
  159.                     wHighVersion : word;
  160.                     szDescription : array[0..WSADESCRIPTION_LEN] of char;
  161.                     szSystemStatus : array[0..WSASYS_STATUS_LEN] of char;
  162.                     iMaxSockets : integer;
  163.                     iMaxUdpDg : integer;
  164.                     lpVendorInfo : PChar;
  165.     end;
  166.  
  167. const
  168.      IP_OPTIONS     =   1;
  169.      INADDR_ANY     =   0;    {msc}
  170.  
  171.      INVALID_SOCKET =   NOT(0);
  172.      SOCKET_ERROR   =   -1;
  173.  
  174.      SOCK_STREAM    =   1;
  175.      SOCK_DGRAM     =   2;
  176.      SOCK_RAW       =   3;
  177.      SOCK_RDM       =   4;
  178.      SOCK_SEQPACKET =   5;
  179.  
  180.      SO_DEBUG       =   $0001;
  181.      SO_ACCEPTCONN  =   $0002;
  182.      SO_REUSEADDR   =   $0004;
  183.      SO_KEEPALIVE   =   $0008;
  184.      SO_DONTROUTE   =   $0010;
  185.      SO_BROADCAST   =   $0020;
  186.      SO_USELOOPBACK =   $0040;
  187.      SO_LINGER      =   $0080;
  188.      SO_OOBINLINE   =   $0100;
  189.  
  190.      SO_DONTLINGER  =   $ff7f;
  191.  
  192.      SO_SNDBUF      =   $1001;
  193.      SO_RCVBUF      =   $1002;
  194.      SO_SNDLOWAT    =   $1003;
  195.      SO_RCVLOWAT    =   $1004;
  196.      SO_SNDTIMEO    =   $1005;
  197.      SO_RCVTIMEO    =   $1006;
  198.      SO_ERROR       =   $1007;
  199.      SO_TYPE        =   $1008;
  200.  
  201.      AF_UNSPEC      =   0;
  202.      AF_UNIX        =   1;
  203.      AF_INET        =   2;
  204.      AF_IMPLINK     =   3;
  205.      AF_PUP         =   4;
  206.      AF_CHAOS       =   5;
  207.      AF_NS          =   6;
  208.      AF_NBS         =   7;
  209.      AF_ECMA        =   8;
  210.      AF_DATAKIT     =   9;
  211.      AF_CCITT       =   10;
  212.      AF_SNA         =   11;
  213.      AF_DECnet      =   12;
  214.      AF_DLI         =   13;
  215.      AF_LAT         =   14;
  216.      AF_HYLINK      =   15;
  217.      AF_APPLETALK   =   16;
  218.  
  219.      AF_MAX         =   17;
  220.  
  221. type
  222.     sockaddr = record
  223.                      sa_family : u_short;
  224.                      sa_data : array[0..13] of char; { should be 0..13 ?}
  225.     end;
  226.  
  227.     sockproto = record
  228.                       sp_family : u_short;
  229.                       sp_protocol : u_short;
  230.     end;
  231.  
  232. const
  233.      PF_UNSPEC      =   AF_UNSPEC;
  234.      PF_UNIX        =   AF_UNIX;
  235.      PF_INET        =   AF_INET;
  236.      PF_IMPLINK     =   AF_IMPLINK;
  237.      PF_PUP         =   AF_PUP;
  238.      PF_CHAOS       =   AF_CHAOS;
  239.      PF_NS          =   AF_NS;
  240.      PF_NBS         =   AF_NBS;
  241.      PF_ECMA        =   AF_ECMA;
  242.      PF_DATAKIT     =   AF_DATAKIT;
  243.      PF_CCITT       =   AF_CCITT;
  244.      PF_SNA         =   AF_SNA;
  245.      PF_DECnet      =   AF_DECnet;
  246.      PF_DLI         =   AF_DLI;
  247.      PF_LAT         =   AF_LAT;
  248.      PF_HYLINK      =   AF_HYLINK;
  249.      PF_APPLETALK   =   AF_APPLETALK;
  250.  
  251.      PF_MAX         =   AF_MAX;        
  252.  
  253. type
  254.     linger = record
  255.                    l_onoff : u_short;
  256.                    l_linger : u_short;
  257.     end;
  258.  
  259. const
  260.      SOL_SOCKET     =   $ffff;
  261.  
  262.      SOMAXCONN      =   5;
  263.  
  264.      MSG_OOB        =   $1;
  265.      MSG_PEEK       =   $2;
  266.      MSG_DONTROUTE  =   $4;
  267.  
  268.      MSG_MAXIOVLEN  =   16;
  269.  
  270.      MAXGETHOSTSTRUCT   =  1024;
  271.  
  272.      FD_READ            =  $01;
  273.      FD_WRITE           =  $02;
  274.      FD_OOB             =  $04;
  275.      FD_ACCEPT          =  $08;
  276.      FD_CONNECT         =  $10;
  277.      FD_CLOSE           =  $20;
  278.  
  279.  
  280.      WSABASEERR         =  10000;
  281.  
  282.      WSAEINTR           =  (WSABASEERR + 4);
  283.      WSAEBADF           =  (WSABASEERR + 9);
  284.      WSAEFAULT          =  (WSABASEERR + 14);
  285.      WSAEINVAL          =  (WSABASEERR + 22);
  286.      WSAEMFILE          =  (WSABASEERR + 24);
  287.  
  288.      WSAEWOULDBLOCK     =  (WSABASEERR + 35);
  289.      WSAEINPROGRESS     =  (WSABASEERR + 36);
  290.      WSAEALREADY        =  (WSABASEERR + 37);
  291.      WSAENOTSOCK        =  (WSABASEERR + 38);
  292.      WSAEDESTADDRREQ    =  (WSABASEERR + 39);
  293.      WSAEMSGSIZE        =  (WSABASEERR + 40);
  294.      WSAEPROTOTYPE      =  (WSABASEERR + 41);
  295.      WSAENOPROTOOPT     =  (WSABASEERR + 42);
  296.      WSAEPROTONOSUPPORT =  (WSABASEERR + 43);
  297.      WSAESOCKTNOSUPPORT  =  (WSABASEERR + 44);
  298.      WSAEOPNOTSUPP      =  (WSABASEERR + 45);
  299.      WSAEPFNOSUPPORT    =  (WSABASEERR + 46);
  300.      WSAEAFNOSUPPORT    =  (WSABASEERR + 47);
  301.      WSAEADDRINUSE      =  (WSABASEERR + 48);
  302.      WSAEADDRNOTAVAIL   =  (WSABASEERR + 49);
  303.      WSAENETDOWN        =  (WSABASEERR + 50);
  304.      WSAENETUNREACH     =  (WSABASEERR + 51);
  305.      WSAENETRESET       =  (WSABASEERR + 52);
  306.      WSAECONNABORTED    =  (WSABASEERR + 53);
  307.      WSAECONNRESET      =  (WSABASEERR + 54);
  308.      WSAENOBUFS         =  (WSABASEERR + 55);
  309.      WSAEISCONN         =  (WSABASEERR + 56);
  310.      WSAENOTCONN        =  (WSABASEERR + 57);
  311.      WSAESHUTDOWN       =  (WSABASEERR + 58);
  312.      WSAETOOMANYREFS    =  (WSABASEERR + 59);
  313.      WSAETIMEDOUT       =  (WSABASEERR + 60);
  314.      WSAECONNREFUSED    =  (WSABASEERR + 61);
  315.      WSAELOOP           =  (WSABASEERR + 62);
  316.      WSAENAMETOOLONG    =  (WSABASEERR + 63);
  317.      WSAEHOSTDOWN       =  (WSABASEERR + 64);
  318.      WSAEHOSTUNREACH    =  (WSABASEERR + 65);
  319.      WSAENOTEMPTY       =  (WSABASEERR + 66);
  320.      WSAEPROCLIM        =  (WSABASEERR + 67);
  321.      WSAEUSERS          =  (WSABASEERR + 68);
  322.      WSAEDQUOT          =  (WSABASEERR + 69);
  323.      WSAESTALE          =  (WSABASEERR + 70);
  324.      WSAEREMOTE         =  (WSABASEERR + 71);
  325.  
  326.      WSASYSNOTREADY     =  (WSABASEERR + 91);
  327.      WSAVERNOTSUPPORTED =  (WSABASEERR + 92);
  328.      WSANOTINITIALISED  =  (WSABASEERR + 93);
  329.  
  330.      WSAHOST_NOT_FOUND  =  (WSABASEERR + 1001);
  331.      HOST_NOT_FOUND     =  WSAHOST_NOT_FOUND;
  332.  
  333.      WSATRY_AGAIN       =  (WSABASEERR + 1002);
  334.      TRY_AGAIN          =  WSATRY_AGAIN;
  335.  
  336.      WSANO_RECOVERY     =  (WSABASEERR + 1003);
  337.      NO_RECOVERY        =  WSANO_RECOVERY;
  338.  
  339.      WSANO_DATA         =  (WSABASEERR + 1004);
  340.      NO_DATA            =  WSANO_DATA;
  341.  
  342.      WSANO_ADDRESS      =  WSANO_DATA;
  343.      NO_ADDRESS         =  WSANO_ADDRESS;
  344.  
  345.      EWOULDBLOCK        =  WSAEWOULDBLOCK;
  346.      EINPROGRESS        =  WSAEINPROGRESS;
  347.      EALREADY           =  WSAEALREADY;
  348.      ENOTSOCK           =  WSAENOTSOCK;
  349.      EDESTADDRREQ       =  WSAEDESTADDRREQ;
  350.      EMSGSIZE           =  WSAEMSGSIZE;
  351.      EPROTOTYPE         =  WSAEPROTOTYPE;
  352.      ENOPROTOOPT        =  WSAENOPROTOOPT;
  353.      EPROTONOSUPPORT    =  WSAEPROTONOSUPPORT;
  354.      ESOCKTNOSUPPORT    =  WSAESOCKTNOSUPPORT;
  355.      EOPNOTSUPP         =  WSAEOPNOTSUPP;
  356.      EPFNOSUPPORT       =  WSAEPFNOSUPPORT;
  357.      EAFNOSUPPORT       =  WSAEAFNOSUPPORT;
  358.      EADDRINUSE         =  WSAEADDRINUSE;
  359.      EADDRNOTAVAIL      =  WSAEADDRNOTAVAIL;
  360.      ENETDOWN           =  WSAENETDOWN;
  361.      ENETUNREACH        =  WSAENETUNREACH;
  362.      ENETRESET          =  WSAENETRESET;
  363.      ECONNABORTED       =  WSAECONNABORTED;
  364.      ECONNRESET         =  WSAECONNRESET;
  365.      ENOBUFS            =  WSAENOBUFS;
  366.      EISCONN            =  WSAEISCONN;
  367.      ENOTCONN           =  WSAENOTCONN;
  368.      ESHUTDOWN          =  WSAESHUTDOWN;
  369.      ETOOMANYREFS       =  WSAETOOMANYREFS;
  370.      ETIMEDOUT          =  WSAETIMEDOUT;
  371.      ECONNREFUSED       =  WSAECONNREFUSED;
  372.      ELOOP              =  WSAELOOP;
  373.      ENAMETOOLONG       =  WSAENAMETOOLONG;
  374.      EHOSTDOWN          =  WSAEHOSTDOWN;
  375.      EHOSTUNREACH       =  WSAEHOSTUNREACH;
  376.      ENOTEMPTY          =  WSAENOTEMPTY;
  377.      EPROCLIM           =  WSAEPROCLIM;
  378.      EUSERS             =  WSAEUSERS;
  379.      EDQUOT             =  WSAEDQUOT;
  380.      ESTALE             =  WSAESTALE;
  381.      EREMOTE            =  WSAEREMOTE;
  382.  
  383. type
  384.     PInteger = ^Integer;   {msc}
  385.  
  386.     PSockAddr = ^SockAddr;
  387.  
  388.     PSockAddr_In = ^SockAddr_In;
  389.  
  390.     PLinger = ^Linger;
  391.  
  392.     PIn_Addr = ^In_Addr;
  393.  
  394.     PFD_SET = ^FD_SET;
  395.  
  396.     PHostEnt = ^HostEnt;
  397.  
  398.     PServEnt = ^ServEnt;
  399.  
  400.     PProtoEnt = ^ProtoEnt;
  401.